package experiment.e08.code;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/11/17 14:35
 * @package experiment.e08.code
 * @description 编写一个应用程序，设计一个窗体，布局为BorderLayout，
 * 北面添加一个Choice组件，该组件有4个课程名称的选项。中心添加一个文本区，
 * 当选择Choice组件中的某个选项后，文本区显示对该课程的介绍。
 */

public class Ch03 {

    public static void main(String[] args) {
        HashMap<String, String> courseMap = new HashMap();
        courseMap.put("Java", "Java是一门面向对象的编程。");
        courseMap.put("Python", "Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计，作为一门叫做ABC语言的替代品。");
        courseMap.put("OpenCV", "OpenCV用C++语言编写，它具有C ++，Python，Java和MATLAB接口");
        courseMap.put("Pandas", "pandas 是基于NumPy");

        JFrame jFrame = new JFrame("课程介绍");
        jFrame.setBounds(600, 400,600,200);
        jFrame.setLayout(new BorderLayout());

        // 设置组件
        Choice courseChoice = new Choice();
        JTextArea courseTextArea = new JTextArea();
        // 向choice添加课程名
        Set<String> courses = courseMap.keySet();
        for (String cours : courses) {
            courseChoice.add(cours);
        }

        // 设置监听器
        courseChoice.addItemListener(e -> {
            System.out.println(e.getItem());
            courseTextArea.setText(courseMap.get(e.getItem()));
        });

        // 窗口添加面板
        jFrame.add(courseChoice, BorderLayout.NORTH);
        jFrame.add(courseTextArea, BorderLayout.CENTER);
        jFrame.setVisible(true);
    }
}
